home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / harvard / nederlands.bst < prev    next >
Text File  |  1994-06-16  |  38KB  |  1,619 lines

  1. %%% ====================================================================
  2. %%%  @BibTeX-style-file{
  3. %%%     author          = "Werenfried Spit",
  4. %%%     version         = "2.5.1",
  5. %%%     date            = "2 November 1993",
  6. %%%     time            = "12:29:12 CET",
  7. %%%     filename        = "nederlands.bst",
  8. %%%     address         = "Departament de Fisica Teorica
  9. %%%                        Universitat de Valencia
  10. %%%                        c/ Moliner, 50
  11. %%%                        E-46100 Burjassot, Valencia
  12. %%%                        Espanya",
  13. %%%     telephone       = "+34-6-386 4551",
  14. %%%     email           = "spit@vm.ci.uv.es
  15. %%%                        spit@ific.uv.es",
  16. %%%     codetable       = "ISO/ASCII",
  17. %%%     keywords        = "BibTeX, Dutch",
  18. %%%     supported       = "yes",
  19. %%%     checksum        = "19068 1618 4873 37905",
  20. %%%     abstract        = "In Dutch (and German, ...) names are sorted on their
  21. %%%                        last part; prepositions (the `von-part') are not
  22. %%%                        considered to be part of the last name for sorting
  23. %%%                        purposes. Thus, J. van Dale will be listed under D.
  24. %%%
  25. %%%                        This style is part of the Harvard package that
  26. %%%                        supports citations like `see Van Dale (1983)' in the
  27. %%%                        text; harvard.sty is needed. Sorting is done
  28. %%%                        according to dutch rules. The layout of the
  29. %%%                        bibliography is adapted to conventions is historical
  30. %%%                        linguistics. As of version 2.3 books may have both
  31. %%%                        an author and an editor.
  32. %%%
  33. %%%                        More information in dutch in the file. ",
  34. %%%     docstring       = "The checksum field above contains a CRC-16
  35. %%%                        checksum as the first value, followed by the
  36. %%%                        equivalent of the standard UNIX wc (word
  37. %%%                        count) utility output of lines, words, and
  38. %%%                        characters.  This is produced by Robert
  39. %%%                        Solovay's checksum utility.",
  40. %%%  }
  41. %%% ====================================================================
  42.  FUNCTION {hello}
  43. { "BibTeX bibliography style `Nederlands' " top$
  44.   "version <2.5>   dated <1-6-93>   (WS)" top$
  45. }
  46. % (C) Werenfried Spit    04-10-90
  47. %
  48. %     Departament de F{\'\i}sica Te\`orica
  49. %     Universitat de Val\`encia
  50. %     c/ dr.Moliner, 50
  51. %     46100 Burjassot
  52. %     Val\`encia
  53. %     Espanya
  54. %
  55. %     spit@vm.ci.uv.es
  56. %
  57. %
  58. %     Met gebruikmaking van veel werk van Piet v Oostrum en Oren Patashnik
  59. %     Met dank aan Paul Wackers en Peter Williams.
  60. %     Voor BibTeX 0.99a en LaTeX 2.09
  61. %
  62. %
  63. % In deze bibliografiestijl wordt ondersteuning gegeven om in de
  64. % tekst citaties met de auteursnaam en het jaartal te laten verschijnen
  65. % bv zie (Van Dale, 1982). Naar Nederlandse gewoonte gebeurt het
  66. % sorteren op achternaam, hoewel het tussenvoegsel eerder geschreven
  67. % wordt. (Van Dale staat dus onder de D.) De ietwat ingewikkelde regel
  68. % uit de nederlandse grammatica voor het gebruik van hoofdletters in
  69. % tussenvoegsels van namen wordt toegepast. (Zie hiervoor het Groene
  70. % Boekje of de ANS, of natuurlijk Van Dale, 1982).
  71. %
  72. % In tegenstelling tot de standaard bibstijlen laat deze stijl toe dat
  73. % een boek zowel een auteur als een redacteur heeft. In zulke gevallen
  74. % wordt op redacteur gesorteerd. Er komt dan bv onder de H in de bibliografie
  75. %  W. Shakespeare, 1991. {\em Macbeth}, bezorgd door W. Hogan. ....
  76. % en in de tekst zal `Hogan (1991)' voorkomen.
  77. %
  78. % Om deze bibliografiestijl te gebruiken moet de LaTeXstijl harvard.sty
  79. % worden gebruikt. Deze definieert \harvarditem en \citeasnoun en
  80. % herdefinieert \cite. Zie verder de bijbehorende documentatie
  81. %
  82. % Van deze stijl is ook versie 1.11 nog beschikbaar: deze werkt met
  83. % citeauthoryear.sty ipv harvard.sty.
  84. %
  85. %
  86. %
  87. % wijzigingen:
  88. % 02-11-93 fout in lidwoordafbreking verbeterd (dank aan Frank Poppe)
  89. % 01-06-93 kruisreferenties veranderd
  90. % 15-12-92 vermelding jaartal bij tijdschriftartikelen verdubbeld
  91. % 14-12-92 vermelding jaartal bij tijdschriftartikelen verplaatst
  92. %          enkele niet gebruikte routines verwijderd
  93. % 22-10-92 mogelijkheid om bij boeken zowel een `author' als een `editor'
  94. %          te vermelden toegevoegd
  95. %          vermelding uitgeversadres (`address') veranderd
  96. %
  97. % 18-05-92 foutje in de sorteerroutine verbeterd  (dank aan Paul Wackers)
  98. % 22-04-92 foutje in de behandeling van seriewerken verbeterd
  99. %          behandeling van het `editor'-veld vernederlandst
  100. %          (dank aan Ton vd Woude)
  101. % 26-03-92 verschillende foutmeldingen verwijderd
  102. % 20-03-92 mogelijk voorkomen van te lange outputregels voorkomen
  103. % 17-03-92 verbetering van de verwerking van entries zonder year-veld
  104. % 16-03-92 behandeling van labels veranderd om te lange strings te voorkomen
  105. %          jaartal voor alle soorten entries direct na de auteur geplaatst
  106. % 12-03-92 label aan jaartal toegevoegd
  107. %          aanpassingen tbv Harvardstijlen
  108. % 14-11-91 regels langer dan 80 tekens verwijderd (ivm met IBMse nukken)
  109. % 27-05-91 karaktertabel toegevoegd
  110. % 14-05-91 behandeling van tussenvoegsels in namen verbeterd
  111. %
  112. %%   Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  113. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  114. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  115. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  116. %%   Dollar        \$     Percent       \%     Ampersand     \&
  117. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  118. %%   Asterisk      \*     Plus          \+     Comma         \,
  119. %%   Minus         \-     Point         \.     Solidus       \/
  120. %%   Colon         \:     Semicolon     \;     Less than     \<
  121. %%   Equals        \=     Greater than  \>     Question mark \?
  122. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  123. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  124. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  125. %%   Right brace   \}     Tilde         \~
  126. %%
  127. %
  128. %   Citation format: [author-last-name, year]
  129. %             [author-last-name \& author-last-name, year]
  130. %             [author-last-name {\em et~al.}, year]
  131. %
  132. %   Reference list ordering: alphabetical by author or whatever passes
  133. %   for author in the absence of one.
  134.  
  135.  
  136. ENTRY
  137.   { address
  138.     author
  139.     booktitle
  140.     chapter
  141.     edition
  142.     editor
  143.     howpublished
  144.     institution
  145.     journal
  146.     key
  147.     month
  148.     note
  149.     number
  150.     organization
  151.     pages
  152.     publisher
  153.     school
  154.     series
  155.     title
  156.     type
  157.     volume
  158.     year
  159.     font
  160.   }
  161.   { title.used }
  162.   { label abbr.label full.label extra.label sort.label list.label year.string }
  163.  
  164. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  165.  
  166. FUNCTION {init.state.consts}
  167. { #0 'before.all :=
  168.   #1 'mid.sentence :=
  169.   #2 'after.sentence :=
  170.   #3 'after.block :=
  171. }
  172.  
  173. STRINGS { s t }
  174.  
  175. FUNCTION {output.nonnull}
  176. { 's :=
  177.   output.state mid.sentence =
  178.     { ", " * write$ }
  179.     { output.state after.block =
  180.     { add.period$ write$
  181.       newline$
  182.       "\newblock " write$
  183.     }
  184.     { output.state before.all =
  185.         'write$
  186.         { add.period$ " " * write$ }
  187.       if$
  188.     }
  189.       if$
  190.       mid.sentence 'output.state :=
  191.     }
  192.   if$
  193.   s
  194. }
  195.  
  196. FUNCTION {output}
  197. { duplicate$ empty$
  198.     'pop$
  199.     'output.nonnull
  200.   if$
  201. }
  202.  
  203. FUNCTION {output.check}
  204. { 't :=
  205.   duplicate$ empty$
  206.     { pop$ "empty " t * " in " * cite$ * warning$ }
  207.     'output.nonnull
  208.   if$
  209. }
  210.  
  211. FUNCTION {One.cap}  %(WS) 14-05-91 capitalizes first letter of string
  212.                     %              leaves the rest the same
  213. { duplicate$
  214.   #1 #1   substring$ "\uppercase{" swap$ * "}" * swap$
  215.   #2 #200 substring$ *
  216. }
  217.  
  218. FUNCTION {output.bibitem}         % (WS 12-03-92) \bibitem replaced by
  219. { newline$                        % \harvarditem;
  220.   "\harvarditem[" write$          % (WS 22 10 92) label doubly written
  221.   label write$                    % to prevent too long strings
  222.   "]%" write$ newline$            % (WS 20 03 92) newlines inserted
  223.   "{"  write$
  224.   label write$
  225.   "}%" write$ newline$
  226.   "{"  write$
  227.   year.string write$
  228.   "}{" write$
  229.   cite$ write$
  230.   "}" write$
  231.   newline$
  232.   ""
  233.   before.all 'output.state :=
  234. }
  235.  
  236. FUNCTION {fin.entry}
  237. { add.period$
  238.   write$
  239.   newline$
  240. }
  241.  
  242. FUNCTION {new.block}
  243. { output.state before.all =
  244.     'skip$
  245.     { after.block 'output.state := }
  246.   if$
  247. }
  248.  
  249. FUNCTION {new.sentence}
  250. { output.state after.block =
  251.     'skip$
  252.     { output.state before.all =
  253.     'skip$
  254.     { after.sentence 'output.state := }
  255.       if$
  256.     }
  257.   if$
  258. }
  259.  
  260. FUNCTION {not}
  261. {   { #0 }
  262.     { #1 }
  263.   if$
  264. }
  265.  
  266. FUNCTION {and}
  267. {   'skip$
  268.     { pop$ #0 }
  269.   if$
  270. }
  271.  
  272. FUNCTION {or}
  273. {   { pop$ #1 }
  274.     'skip$
  275.   if$
  276. }
  277.  
  278. FUNCTION {new.block.checka}
  279. { empty$
  280.     'skip$
  281.     'new.block
  282.   if$
  283. }
  284.  
  285. FUNCTION {new.block.checkb}
  286. { empty$
  287.   swap$ empty$
  288.   and
  289.     'skip$
  290.     'new.block
  291.   if$
  292. }
  293.  
  294. FUNCTION {new.sentence.checka}
  295. { empty$
  296.     'skip$
  297.     'new.sentence
  298.   if$
  299. }
  300.  
  301. FUNCTION {new.sentence.checkb}
  302. { empty$
  303.   swap$ empty$
  304.   and
  305.     'skip$
  306.     'new.sentence
  307.   if$
  308. }
  309.  
  310. FUNCTION {field.or.null}
  311. { duplicate$ empty$
  312.     { pop$ "" }
  313.     'skip$
  314.   if$
  315. }
  316.  
  317. FUNCTION {emphasize}
  318. { duplicate$ empty$
  319.     { pop$ "" }
  320.     { "{\em " swap$ * "}" * }
  321.   if$
  322. }
  323.  
  324. INTEGERS { nameptr namesleft numnames }
  325.  
  326. FUNCTION {format.names}
  327. { 's :=
  328.   #1 'nameptr :=
  329.   s num.names$ 'numnames :=
  330.   numnames 'namesleft :=
  331.     { namesleft #0 > }
  332.  
  333.     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  334.  
  335.       nameptr #1 >                  % in de referentie wordt de volledige naam
  336.     { namesleft #1 >                % afgedrukt: "J.H. van Dale"  (WS)
  337.         { ", " * t * }
  338.         { numnames #2 >
  339.          { "," * }
  340.          'skip$
  341.           if$
  342.           t "others" =
  343.          { " {\em ~et~al.}" * }
  344.          { " en " * t * }           % hier wordt een tussenvoegsel
  345.           if$                       % tussen auteursnamen gemaakt   (WS)
  346.         }
  347.       if$
  348.     }
  349.     't
  350.       if$
  351.       nameptr #1 + 'nameptr :=
  352.       namesleft #1 - 'namesleft :=
  353.     }
  354.   while$
  355.   font empty$
  356.   {   "{" swap$ * "}" * }
  357.   {   "{" font * " " * swap$ * "}" * }
  358.   if$
  359. }
  360.  
  361. FUNCTION {format.authors}
  362. { author empty$
  363.     { "" }
  364.     { author format.names }
  365.   if$
  366. }
  367.  
  368.  
  369. % Een editor heet in het Nedelands redacteur, maar het is gebruikelijk
  370. % dit aan te geven met ``redactie''. (230492).
  371.  
  372. FUNCTION {format.editors}
  373. { editor empty$
  374.     { "" }
  375.     {  editor format.names
  376.        ", redactie" *
  377.     }
  378.   if$
  379. }
  380.  
  381. % Sommige boeken hebben behalve een auteur ook een redacteur; m.n.
  382. % wanneer de tekst van een ouder werk opnieuw wordt uitgegeven. Voor
  383. % dit soort gevallen is format.editortoo:
  384. %
  385. FUNCTION {format.editorstoo}
  386. { editor empty$
  387.     { "" }
  388.     {  " bezorgd door " editor format.names *
  389.     }
  390.   if$
  391. }
  392.  
  393.  
  394.  
  395. FUNCTION {format.title}
  396. { title empty$
  397.     { "" }
  398.  
  399.     { title }
  400.  
  401.   if$
  402. }
  403.  
  404. FUNCTION {n.dashify}
  405. { 't :=
  406.   ""
  407.     { t empty$ not }
  408.     { t #1 #1 substring$ "-" =
  409.     { t #1 #2 substring$ "--" = not
  410.         { "--" *
  411.           t #2 global.max$ substring$ 't :=
  412.         }
  413.         {   { t #1 #1 substring$ "-" = }
  414.          { "-" *
  415.            t #2 global.max$ substring$ 't :=
  416.          }
  417.           while$
  418.         }
  419.       if$
  420.     }
  421.     { t #1 #1 substring$ *
  422.       t #2 global.max$ substring$ 't :=
  423.     }
  424.       if$
  425.     }
  426.   while$
  427. }
  428.  
  429. FUNCTION {format.date}
  430. { year empty$
  431.     { month empty$
  432.     { "" }
  433.     { "there's a month but no year in " cite$ * warning$
  434.       month
  435.     }
  436.       if$
  437.     }
  438.     { month empty$
  439.     { year.string }       % (WS 16 03 92) year.string ipv year extra.label *
  440.     { month " " * year.string * }
  441.       if$
  442.     }
  443.   if$
  444. }
  445.  
  446. FUNCTION {format.btitle}
  447. { title emphasize
  448. }
  449.  
  450. FUNCTION {tie.or.space.connect}
  451. { duplicate$ text.length$ #3 <
  452.     { "~" }
  453.     { " " }
  454.   if$
  455.   swap$ * *
  456. }
  457.  
  458. FUNCTION {either.or.check}
  459. { empty$
  460.     'pop$
  461.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  462.   if$
  463. }
  464.  
  465. FUNCTION {format.bvolume}                            % in het Nederlands (WS)
  466. { volume empty$
  467.     { "" }
  468.     { series empty$
  469.       { " deel"  }                                  % zonder komma (WS;220492)
  470.       { " "  series emphasize * ", deel" * }
  471.       if$
  472.       volume tie.or.space.connect
  473.     }
  474.   if$
  475. }
  476.  
  477. FUNCTION {format.number.series}                      % in het Nederlands (WS)
  478. { volume empty$
  479.     { number empty$
  480.         { series field.or.null }
  481.         { series empty$
  482.             { "there's a number but no series in " cite$ * warning$ }
  483.             { series number tie.or.space.connect }
  484.           if$
  485.         }
  486.       if$
  487.     }
  488.     { "" }
  489.   if$
  490. }
  491.  
  492. FUNCTION {format.edition}                             % in het Nederlands (WS)
  493. { edition empty$
  494.     { "" }
  495.     { edition "1" =
  496.         { "Eerste" }
  497.         { edition "2" =
  498.             { "Tweede" }
  499.             { edition "3" =
  500.                 { "Derde" }
  501.                 { edition "$^{\rm e}$ " * }
  502.                 if$
  503.             }
  504.             if$
  505.         }
  506.         if$
  507.         output.state mid.sentence =
  508.             { "l" change.case$ " druk" * }
  509.             { "t" change.case$ " druk" * }
  510.             if$
  511.     }
  512.     if$
  513. }
  514.  
  515. INTEGERS { multiresult }
  516.  
  517. FUNCTION {multi.page.check}
  518. { 't :=
  519.   #0 'multiresult :=
  520.     { multiresult not
  521.       t empty$ not
  522.       and
  523.     }
  524.     { t #1 #1 substring$
  525.       duplicate$ "-" =
  526.       swap$ duplicate$ "," =
  527.       swap$ "+" =
  528.       or or
  529.     { #1 'multiresult := }
  530.     { t #2 global.max$ substring$ 't := }
  531.       if$
  532.     }
  533.   while$
  534.   multiresult
  535. }
  536.  
  537. FUNCTION {format.pages}
  538. { pages empty$
  539.     { "" }
  540.     { pages multi.page.check
  541.     { "p." pages n.dashify tie.or.space.connect }
  542.     { "p." pages tie.or.space.connect }
  543.       if$
  544.     }
  545.   if$
  546. }
  547.  
  548.  
  549. FUNCTION {format.vol.date.pages}         % (14-12-1992) was: format.vol.pages
  550. {   volume empty$
  551.        { "empty volume in " cite$ * warning$ " " }
  552.        {  volume  }
  553.     if$
  554.     number empty$
  555.        'skip$
  556.       { "-" * number * }
  557.     if$
  558.     year empty$
  559.        { "empty year in " cite$ * warning$ " " }
  560. %%       { " (" * format.date * ")" * }           % (15-12-1992) jaartal zonder
  561.        { " (" * year * ")" * }                    %   volgletter
  562.     if$
  563.     pages empty$
  564.        'skip$
  565.       { duplicate$ empty$
  566.         { pop$ format.pages }
  567.         { ", " * pages n.dashify * }
  568.       if$
  569.          }
  570.    if$
  571. }
  572.  
  573. FUNCTION {format.vol.pages}
  574. {   volume empty$
  575.        { "empty volume in " cite$ * warning$ " " }
  576.        {  volume  }
  577.     if$
  578.     number empty$
  579.        'skip$
  580.       { "-" * number * }
  581.     if$
  582.     pages empty$
  583.        'skip$
  584.       { duplicate$ empty$
  585.         { pop$ format.pages }
  586.         { ", " * pages n.dashify * }
  587.       if$
  588.          }
  589.    if$
  590. }
  591.  
  592.  
  593.  
  594.  
  595. FUNCTION {format.chapter.pages}                       % in het Nederlands (WS)
  596. { chapter empty$
  597.     'format.pages
  598.     { type empty$
  599.         { output.state mid.sentence =
  600.           { "hoofdstuk" }
  601.           { "Hoofdstuk" }
  602.           if$
  603.          }
  604.         { type "l" change.case$ }
  605.       if$
  606.       chapter tie.or.space.connect
  607.       pages empty$
  608.         'skip$
  609.         { ", " * format.pages * }
  610.       if$
  611.     }
  612.   if$
  613. }
  614.  
  615. FUNCTION {format.in.ed.booktitle}                     % in het Nederlands (WS)
  616. { booktitle empty$                                    %
  617.     { "" }
  618.     { editor empty$
  619.       { output.state mid.sentence =
  620.         { "in " booktitle emphasize * }
  621.         { "In " booktitle emphasize * }
  622.         if$ }
  623.       { output.state mid.sentence =
  624.         { "in " booktitle emphasize * ", " * format.editors * }
  625.         { "In " booktitle emphasize * ", " * format.editors * }
  626.         if$ }
  627.       if$
  628.     }
  629.   if$
  630. }
  631.  
  632. FUNCTION {empty.misc.check}
  633. { author empty$ title empty$ howpublished empty$
  634.   month empty$ year empty$ note empty$
  635.   and and and and and
  636.  
  637.   key empty$ not and
  638.  
  639.     { "all relevant fields are empty in " cite$ * warning$ }
  640.     'skip$
  641.   if$
  642. }
  643.  
  644. FUNCTION {format.thesis.type}
  645. { type empty$
  646.     'skip$
  647.     { pop$
  648.       type "t" change.case$
  649.     }
  650.   if$
  651. }
  652.  
  653. FUNCTION {format.preprint.number}
  654. { type empty$
  655.     { "Preprint" }
  656.     'type
  657.   if$
  658.   number empty$
  659.     { "t" change.case$ }
  660.     { number tie.or.space.connect }
  661.   if$
  662. }
  663.  
  664. FUNCTION {format.tr.number}
  665. { type empty$
  666.     { "Technical Report" }
  667.     'type
  668.   if$
  669.   number empty$
  670.     { "t" change.case$ }
  671.     { number tie.or.space.connect }
  672.   if$
  673. }
  674.  
  675.  
  676. FUNCTION {format.article.crossref}
  677. { key empty$
  678.     { journal empty$
  679.     { "need key or journal for " cite$ * " to crossref " * crossref *
  680.       warning$
  681.       ""
  682.     }
  683.     { "In {\em " journal * "\/}" * }
  684.       if$
  685.     }
  686.     { "In " key * }
  687.   if$
  688.   " \cite{" * crossref * "}" *
  689. }
  690.  
  691. FUNCTION {format.crossref.editor}
  692. { editor #1 "{vv~}{ll}" format.name$ One.cap
  693.   editor num.names$ duplicate$
  694.   #2 >
  695.     { pop$ "{\em ~et~al.}" * }
  696.     { #2 <
  697.     'skip$
  698.     { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  699.         { " {\em ~et~al.}" * }
  700.         { " en " * editor #2 "{vv~}{ll}" format.name$ One.cap * }
  701.       if$
  702.     }
  703.       if$
  704.     }
  705.   if$
  706. }
  707.  
  708.  
  709. % v2.5 (1-6-93) crossreferencing changed: now uses \citeasnoun in case
  710. %      there is an editor (which is supposed to be the author/editor
  711. %      of the crossreferenced entry)
  712. FUNCTION {format.book.crossref}
  713. { volume empty$
  714.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  715.       "In "
  716.     }
  717.     { "Volume" volume tie.or.space.connect
  718.       " of " *
  719.     }
  720.   if$
  721.   editor empty$
  722.   editor field.or.null author field.or.null =
  723.   or
  724.     { key empty$
  725.     { series empty$
  726.         { "need editor, key, or series for " cite$ * " to crossref " *
  727.           crossref * warning$
  728.           "" *
  729.         }
  730.         { "{\em " * series * "\/}" * }
  731.       if$
  732.     }
  733.     { key * }
  734.       if$
  735.      " \cite{" * crossref * "}" *
  736.     }
  737.     { " \citeasnoun{" * crossref * "}" * }
  738.   if$
  739. }
  740.  
  741. FUNCTION {institution.or.organization.output}
  742. {institution empty$
  743.  {organization empty$
  744.   { "Both organization and institution are missing in " cite$ * warning$ }
  745.   { organization output }
  746.   if$
  747.  }
  748.  {institution output}
  749. if$
  750. }
  751.  
  752. % v2.5 (1-6-93) crossreferencing changed: uses \citeasnoun when possible
  753. FUNCTION {format.incoll.inproc.crossref}
  754. { editor empty$
  755.   editor field.or.null author field.or.null =
  756.   or
  757.     { key empty$
  758.     { booktitle empty$
  759.         { "need editor, key, or booktitle for " cite$ * " to crossref " *
  760.           crossref * warning$
  761.           ""
  762.         }
  763.         { "In {\em " booktitle * "\/}" * }
  764.       if$
  765.     }
  766.     { "In " key * }
  767.       if$
  768.     " \cite{" * crossref * "}" *
  769.     }
  770.     { "In \citeasnoun{" crossref * "}" * }
  771.   if$
  772.  
  773. }
  774.  
  775. FUNCTION {article}
  776. { output.bibitem
  777.   format.authors "author" output.check
  778.   format.date    "year"   output.check
  779.   new.block
  780.   format.title "title" output.check
  781.   new.block
  782.   crossref missing$
  783.     { journal emphasize "journal" output.check
  784.       format.vol.date.pages output        % (14-12-1992) was: format.vol.pages
  785.     }
  786.     { format.article.crossref output.nonnull
  787.       format.pages output
  788.     }
  789.   if$
  790.   new.block
  791.   note output
  792.   fin.entry
  793. }
  794.  
  795. FUNCTION {book}
  796. { output.bibitem
  797.   author empty$
  798.     { format.editors "author and editor" output.check }
  799.     { format.authors output.nonnull
  800. %      crossref missing$
  801. %    { "author and editor" editor either.or.check }
  802. %      'skip$
  803. %     if$
  804.     }
  805.   if$
  806.   format.date "year" output.check
  807.   new.block
  808.   format.btitle "title" output.check
  809.   author empty$
  810.   { skip$ }
  811.   { editor empty$
  812.     'skip$
  813.      { format.editorstoo "editor" output.check }
  814.      if$
  815.    }
  816.   if$
  817.   crossref missing$
  818.     { format.bvolume output
  819.       new.block
  820.       format.number.series output
  821.       new.sentence
  822.       address output
  823.       publisher "publisher" output.check
  824.     }
  825.     { new.block
  826.       format.book.crossref output.nonnull
  827.     }
  828.   if$
  829.   format.edition output
  830.   new.block
  831.   note output
  832.   fin.entry
  833. }
  834.  
  835. FUNCTION {booklet}
  836. { output.bibitem
  837.   format.authors output
  838.   format.date output                     % no check on year (WS 26-03-92)
  839.   new.block
  840.   format.title "title" output.check
  841.   howpublished address new.block.checkb
  842.   howpublished output
  843.   address output
  844.   new.block
  845.   note output
  846.   fin.entry
  847. }
  848.  
  849. FUNCTION {inbook}                            % produceert zowel hoofdstuk-
  850. { output.bibitem                             % als boektitel  (WS)
  851.   author empty$                              % zie ook format.in.ed.booktitle
  852.     { format.editors "author and editor" output.check }
  853.     { format.authors output.nonnull
  854.       crossref missing$
  855.         { "author and editor" editor either.or.check }
  856.         'skip$
  857.       if$
  858.     }
  859.   if$
  860.   format.date "year" output.check
  861.   new.block
  862.   format.btitle "title" output.check
  863.   crossref missing$
  864.     { format.bvolume output
  865.       format.chapter.pages "chapter and pages" output.check
  866.       format.in.ed.booktitle output
  867.       new.block
  868.       format.number.series output
  869.       new.sentence
  870.       publisher "publisher" output.check
  871.       address output
  872.     }
  873.     { format.chapter.pages "chapter and pages" output.check
  874.       new.block
  875.       format.book.crossref output.nonnull
  876.     }
  877.   if$
  878.   format.edition output
  879.   new.block
  880.   note output
  881.   fin.entry
  882. }
  883.  
  884. FUNCTION {incollection}
  885. { output.bibitem
  886.   format.authors "author" output.check
  887.   format.date "year" output.check
  888.   new.block
  889.   format.title "title" output.check
  890.   new.block
  891.   crossref missing$
  892.     { format.in.ed.booktitle "booktitle" output.check
  893.       format.bvolume output
  894.       format.number.series output
  895.       format.chapter.pages output
  896.       new.sentence
  897.       publisher "publisher" output.check
  898.       address output
  899.       format.edition output
  900.     }
  901.     { format.incoll.inproc.crossref output.nonnull
  902.       format.chapter.pages output
  903.     }
  904.   if$
  905.   new.block
  906.   note output
  907.   fin.entry
  908. }
  909.  
  910. FUNCTION {inproceedings}
  911. { output.bibitem
  912.   format.authors "author" output.check
  913.   format.date "year" output.check
  914.   new.block
  915.   format.title "title" output.check
  916.   new.block
  917.   crossref missing$
  918.     { format.in.ed.booktitle "booktitle" output.check
  919.       format.bvolume output
  920.       format.number.series output
  921.       format.pages output
  922.       address empty$
  923.     { organization publisher new.sentence.checkb
  924.       organization output
  925.       publisher output
  926.     }
  927.     { address output.nonnull
  928.       new.sentence
  929.       organization output
  930.       publisher output
  931.     }
  932.       if$
  933.     }
  934.     { format.incoll.inproc.crossref output.nonnull
  935.       format.pages output
  936.     }
  937.   if$
  938.   new.block
  939.   note output
  940.   fin.entry
  941. }
  942.  
  943. FUNCTION {conference} { inproceedings }
  944.  
  945. FUNCTION {manual}
  946. { output.bibitem
  947.   author empty$
  948.     { organization empty$
  949.     'skip$
  950.     { organization output.nonnull
  951.       address output
  952.     }
  953.       if$
  954.     }
  955.     { format.authors output.nonnull }
  956.   if$
  957.   format.date output                     % no check on year (WS 26-03-92)
  958.   new.block
  959.   format.btitle "title" output.check
  960.   author empty$
  961.     { organization empty$
  962.     { address new.block.checka
  963.       address output
  964.     }
  965.     'skip$
  966.       if$
  967.     }
  968.     { organization address new.block.checkb
  969.       organization output
  970.       address output
  971.     }
  972.   if$
  973.   format.edition output
  974.   new.block
  975.   note output
  976.   fin.entry
  977. }
  978.  
  979. FUNCTION {mastersthesis}                % doctoraalscriptie (WS)
  980. { output.bibitem
  981.   format.authors "author" output.check
  982.   format.date "year" output.check
  983.   new.block
  984.   format.btitle "title" output.check
  985.   new.block
  986.   "Doctoraalscriptie" format.thesis.type output.nonnull
  987.   school "school" output.check
  988.   address output
  989.   number empty$
  990.          { skip$ }
  991.          { " (Nr. " number * ")" * output }
  992.          if$
  993.   new.block
  994.   note output
  995.   fin.entry
  996. }
  997.  
  998.  
  999. FUNCTION {phdthesis}                                     % proefschrift (WS)
  1000. { output.bibitem
  1001.   format.authors "author" output.check
  1002.   format.date "year" output.check
  1003.   new.block
  1004.   format.btitle "title" output.check
  1005.   new.block
  1006.   "Dissertatie" format.thesis.type output.nonnull
  1007.   school "school" output.check
  1008.   address output
  1009.   new.block
  1010.   note output
  1011.   fin.entry
  1012. }
  1013.  
  1014. FUNCTION {preprint}
  1015. { output.bibitem
  1016.   format.authors "author" output.check
  1017.   format.date "year" output.check
  1018.   new.block
  1019.   format.title "title" output.check
  1020.   new.block
  1021.   format.preprint.number output.nonnull
  1022.   institution.or.organization.output
  1023.   publisher output
  1024.   address output
  1025.   new.block
  1026.   note output
  1027.   fin.entry
  1028. }
  1029.  
  1030. FUNCTION {proceedings}
  1031. { output.bibitem
  1032.   editor empty$
  1033.     { organization output }
  1034.     { format.editors output.nonnull }
  1035.   if$
  1036.   new.block
  1037.   format.btitle "title" output.check
  1038.   format.bvolume output
  1039.   format.number.series output
  1040.   address empty$
  1041.     { editor empty$
  1042.     { publisher new.sentence.checka }
  1043.     { organization publisher new.sentence.checkb
  1044.       organization output
  1045.     }
  1046.       if$
  1047.       publisher output
  1048.       format.date "year" output.check
  1049.     }
  1050.     { address output.nonnull
  1051.       format.date "year" output.check
  1052.       new.sentence
  1053.       editor empty$
  1054.     'skip$
  1055.     { organization output }
  1056.       if$
  1057.       publisher output
  1058.     }
  1059.   if$
  1060.   new.block
  1061.   note output
  1062.   fin.entry
  1063. }
  1064.  
  1065. FUNCTION {techreport}
  1066. { output.bibitem
  1067.   format.authors "author" output.check
  1068.   format.date "year" output.check
  1069.   new.block
  1070.   format.title "title" output.check
  1071.   new.block
  1072.   format.tr.number output.nonnull
  1073.   institution "institution" output.check
  1074.   address output
  1075.   new.block
  1076.   note output
  1077.   fin.entry
  1078. }
  1079.  
  1080. FUNCTION {unpublished}
  1081. { output.bibitem
  1082.   format.authors "author" output.check
  1083.   format.date output                     % no check on year (WS 26-03-92)
  1084.   new.block
  1085.   format.title "title" output.check
  1086.   new.block
  1087.   note "note" output.check
  1088.   fin.entry
  1089. }
  1090.  
  1091. FUNCTION {misc}
  1092. { output.bibitem
  1093.   format.authors output
  1094.   format.date output                     % no check on year (WS 26-03-92)
  1095.   title howpublished new.block.checkb
  1096.   format.title output
  1097.   howpublished new.block.checka
  1098.   howpublished output
  1099.   new.block
  1100.   note output
  1101.   fin.entry
  1102.   empty.misc.check
  1103. }
  1104.  
  1105. FUNCTION {default.type} { misc }
  1106.  
  1107. %
  1108. MACRO {tbp} {"verschijnt"}
  1109.  
  1110. % De namen van de maanden in het Nederlands
  1111. %
  1112. MACRO {jan} {"januari"}
  1113. MACRO {feb} {"februari"}
  1114. MACRO {mar} {"maart"}
  1115. MACRO {apr} {"april"}
  1116. MACRO {may} {"mei"}
  1117. MACRO {jun} {"juni"}
  1118. MACRO {jul} {"juli"}
  1119. MACRO {aug} {"augustus"}
  1120. MACRO {sep} {"september"}
  1121. MACRO {oct} {"oktober"}
  1122. MACRO {nov} {"november"}
  1123. MACRO {dec} {"december"}
  1124.  
  1125. % De Nederlanse universiteiten
  1126. %
  1127. MACRO {KUN} {"Katholieke Universiteit Nijmegen"}
  1128. MACRO {KUB} {"Katholieke Universiteit Brabant"}
  1129. MACRO {LUW} {"Landbouwuniversiteit Wageningen"}
  1130. MACRO {RL}  {"Rijksuniversiteit Limburg"}
  1131. MACRO {RUG} {"Rijksuniversiteit te Groningen"}
  1132. MACRO {RUL} {"Rijksuniversiteit te Leiden"}
  1133. MACRO {RUU} {"Rijksuniversiteit te Utrecht"}
  1134. MACRO {TUD} {"Technische Universiteit Delft"}
  1135. MACRO {TUE} {"Technische Universiteit Eindhoven"}
  1136. MACRO {TUT} {"Universiteit Twente"}
  1137. MACRO {EUR} {"Erasmusuniversiteit Rotterdam"}
  1138. MACRO {UvA} {"Universiteit van Amsterdam"}
  1139. MACRO {VU}  {"Vrije Universiteit"}
  1140.  
  1141.  
  1142.  
  1143. % Een aantal natuurkundetijdschriften
  1144. %
  1145. MACRO {AcP}    {"Acta Physica"}
  1146. MACRO {AcPA}   {"Acta Physica Austriaca"}
  1147. MACRO {AcPP}   {"Acta Physica Polonica"}
  1148. MACRO {AdP}    {"Advances in Physics"}
  1149. MACRO {AdNP}   {"Advances in Nuclear Physics"}
  1150. MACRO {AmJP}   {"American Journal of Physics"}
  1151. MACRO {AnPDu}  {"Annalen der Physik (Leipzig)"}
  1152. MACRO {AnPFr}  {"Annales de Physique (Paris)"}
  1153. MACRO {AnPNY}  {"Annals of Physics (NY)"}
  1154. MACRO {ARevNS} {"Annual Review of Nuclear Science"}
  1155. MACRO {ADNDT}  {"Atomic Data and Nuclear Data Tables"}
  1156. MACRO {AusJP}  {"Australian Journal of Physics"}
  1157. MACRO {CanJP}  {"Canadian Journal Physics"}
  1158. MACRO {CPC}    {"Computer Physics Communications"}
  1159. MACRO {EJP}    {"European Journal of Physics"}
  1160. MACRO {EPL}    {"Europhysics Letters"}
  1161. MACRO {FBS}    {"Few Body Systems"}
  1162. MACRO {FBSSup} {"Few Body Systems Supplement"}
  1163. MACRO {FortP}  {"Fortschritte der Physik"}
  1164. MACRO {HePA}   {"Helvetica Physica Acta"}
  1165. MACRO {IEEE}   {"IEEE Transactions"}
  1166. MACRO {IJMP}   {"International Journal of Modern Physics"}
  1167. MACRO {JETP}   {"JETP"}
  1168. MACRO {JETPL}  {"JETP Letters"}
  1169. MACRO {JaFi}   {"{\cyr {\Ja}derna\ja\ Fizika}"}
  1170. MACRO {JMP}    {"Journal of Mathematical Physics"}
  1171. MACRO {JPFr}   {"Journal de Physique (Paris)"}
  1172. MACRO {JP}     {"Journal of Physics"}
  1173. MACRO {JPSJ}   {"Journal of the Physical Society of Japan"}
  1174. MACRO {JPSJSup}{"Journal of the Physical Society of Japan Supplement"}
  1175. MACRO {MPL}    {"Modern Physics Letters"}
  1176. MACRO {NCim}   {"Il Nuovo Cimento"}
  1177. MACRO {NDS}    {"Nuclear Data Sheets"}
  1178. MACRO {NP}     {"Nuclear Physics"}
  1179. MACRO {NPSup}  {"Nuclear Physics Supplements"}
  1180. MACRO {NTvN}   {"Nederlands Tijdschrift voor Natuurkunde"}
  1181. MACRO {Phy}    {"Physica"}
  1182. MACRO {PL}     {"Physics Letters"}
  1183. MACRO {PRSLon} {"Proceedings of the Royal Society of London"}
  1184. MACRO {PR}     {"Physical Review"}
  1185. MACRO {PRL}    {"Physical Review Letters"}
  1186. MACRO {PRep}   {"Physics Reports"}
  1187. MACRO {PScr}   {"Physica Scripta"}
  1188. MACRO {PToday} {"Physics Today"}
  1189. MACRO {PTP}    {"Progress of Theoretical Physics"}
  1190. MACRO {RMP}    {"Reviews of Modern Physics"}
  1191. MACRO {RPP}    {"Reports of Progress in Physics"}
  1192. MACRO {ScAm}   {"Scientific American"}
  1193. MACRO {SSin}   {"Scienta Sinica"}
  1194. MACRO {SovJNP} {"Soviet Journal of Nuclear Physics"}
  1195. MACRO {SovJPN} {"Soviet Journal of Particles and Nuclei"}
  1196. MACRO {SovPDo} {"Soviet Physics Doklady"}
  1197. MACRO {SovPUs} {"Soviet Physics Uspekhi"}
  1198. MACRO {SPAW}   {"Sitzungsberichte der Preussische Akademie der Wissenschaften"}
  1199. MACRO {STS}    {"Bulletin of Science, Technology and Social Affairs"}
  1200. MACRO {ZfN}    {"Zeitschrift f{\H{u}}r Naturforschung"}
  1201. MACRO {ZfP}    {"Zeitschrift f{\H{u}}r Physik"}
  1202.  
  1203.  
  1204.  
  1205. READ
  1206.  
  1207. EXECUTE {hello}
  1208.  
  1209. FUNCTION {sortify}
  1210. { purify$
  1211.   "l" change.case$
  1212. }
  1213.  
  1214. INTEGERS { numberlen numberzero}
  1215.  
  1216. FUNCTION {numsortify}
  1217. { purify$
  1218.   "l" change.case$
  1219.   's :=
  1220.   #1 'numberlen :=
  1221.   { s numberlen #1 substring$ "1" =
  1222.     s numberlen #1 substring$ "2" =
  1223.     s numberlen #1 substring$ "3" =
  1224.     s numberlen #1 substring$ "4" =
  1225.     s numberlen #1 substring$ "5" =
  1226.     s numberlen #1 substring$ "6" =
  1227.     s numberlen #1 substring$ "7" =
  1228.     s numberlen #1 substring$ "8" =
  1229.     s numberlen #1 substring$ "9" =
  1230.     s numberlen #1 substring$ "0" =
  1231.     or or or or or or or or or    }
  1232.   { numberlen #1 + 'numberlen :=  }
  1233.   while$
  1234.   #6 numberlen -  'numberzero :=
  1235.   "000000" #1 numberzero substring$
  1236.   s *
  1237. }
  1238. INTEGERS { len }
  1239.  
  1240. FUNCTION {chop.word}
  1241. { 's :=
  1242.   'len :=
  1243.   s #1 len substring$ =
  1244.     { s len #1 + global.max$ substring$ }
  1245.     's
  1246.   if$
  1247. }
  1248.  
  1249. INTEGERS { et.al.char.used }
  1250.  
  1251. FUNCTION {initialize.et.al.char.used}
  1252. { #0 'et.al.char.used :=
  1253. }
  1254.  
  1255. EXECUTE {initialize.et.al.char.used}
  1256.  
  1257.  
  1258. % this function is provided twice (v2.3 22-10-92): once for the full label
  1259. % once for the abbreviated label
  1260. % the abbreviated version is the version from v2.1
  1261. %
  1262. FUNCTION {format.lab.names.abbr}
  1263. { 's :=
  1264.   s num.names$ 'numnames :=
  1265.  
  1266.   numnames #1 =                               % maak het citatielabel dat
  1267.     { s #1 "{vv~}{ll}" format.name$ One.cap}  % wordt afgedrukt
  1268.     { numnames #2 =                           %  b.v.  "van Dale"     (WS)
  1269.         {s #1 "{vv~}{ll} " format.name$ One.cap
  1270.          s #2 "{ll}" format.name$ "others" =
  1271.                 { "{\em~et~al.}" * }
  1272.                 { " en " * s #2 "{vv~}{ll}" format.name$ One.cap * }
  1273.          if$
  1274.         }
  1275.         { s #1 "{vv~}{ll}" format.name$ One.cap  "{\em~et~al.}" *}
  1276.       if$
  1277.     }
  1278.   if$
  1279.  
  1280. }
  1281.  
  1282. FUNCTION {format.lab.names.full}
  1283. { 's :=
  1284.   #1 'nameptr :=
  1285.   s num.names$ 'numnames :=
  1286.   numnames 'namesleft :=
  1287.     { namesleft #0 > }                                    % maak het citatielabel dat
  1288.     { s nameptr "{vv~}{ll}" format.name$ One.cap  't :=   % wordt afgedrukt
  1289.       nameptr > #1                                        %  b.v.  "van Dale"     (WS)
  1290.       { namesleft #1 >
  1291.         { ", " * t * }
  1292.         { s "others" =
  1293.           { "{\em~et~al.}"  * }
  1294.           { " en " * t * }
  1295.           if$
  1296.         }
  1297.         if$
  1298.        }
  1299.       't
  1300.       if$
  1301.       nameptr #1 + 'nameptr :=
  1302.       namesleft #1 - 'namesleft :=
  1303.     }
  1304.     while$
  1305.     t
  1306. }
  1307.  
  1308.  
  1309. FUNCTION {author.key.label}
  1310. { author empty$
  1311.     { key empty$
  1312.     { cite$ #1 #3 substring$ }
  1313.     { key }
  1314.       if$
  1315.     }
  1316.     { author format.lab.names.abbr }
  1317.   if$
  1318. }
  1319.  
  1320.  
  1321. %% (26-120-92): we proberen eerst de editor, dan de auteur
  1322. FUNCTION {author.editor.key.label}
  1323. { editor empty$
  1324.     { author empty$
  1325.     { key empty$
  1326.  
  1327.         { cite$ #1 #3 substring$ }
  1328.  
  1329.         { key }
  1330.       if$
  1331.     }
  1332.     { author format.lab.names.abbr }
  1333.       if$
  1334.     }
  1335.     { editor format.lab.names.abbr }
  1336.   if$
  1337. }
  1338.  
  1339. FUNCTION {author.key.organization.label}
  1340. { author empty$
  1341.     { key empty$
  1342.     { organization empty$
  1343.  
  1344.         { cite$ #1 #3 substring$ }
  1345.  
  1346.         { "The " #4 organization chop.word #3 text.prefix$ }
  1347.       if$
  1348.     }
  1349.     { key }
  1350.       if$
  1351.     }
  1352.     { author format.lab.names.abbr }
  1353.   if$
  1354. }
  1355.  
  1356. FUNCTION {editor.key.organization.label}
  1357. { editor empty$
  1358.     { key empty$
  1359.     { organization empty$
  1360.  
  1361.         { cite$ #1 #3 substring$ }
  1362.  
  1363.         { "The " #4 organization chop.word #3 text.prefix$ }
  1364.       if$
  1365.     }
  1366.     { key }
  1367.       if$
  1368.     }
  1369.     { editor format.lab.names.abbr }
  1370.   if$
  1371. }
  1372.  
  1373. FUNCTION {calc.label}
  1374. { type$ "book" =
  1375.   type$ "inbook" =
  1376.   or
  1377.     'author.editor.key.label
  1378.     { type$ "proceedings" =
  1379.     'editor.key.organization.label
  1380.     { type$ "manual" =
  1381.         'author.key.organization.label
  1382.         'author.key.label
  1383.       if$
  1384.     }
  1385.       if$
  1386.     }
  1387.   if$
  1388.     duplicate$
  1389.     year empty$
  1390.     { }
  1391.     { year * extra.label * }
  1392.     if$
  1393.   'sort.label :=
  1394.   'label :=                   % maak het af te drukken citeerlabel label
  1395.                               % en het sorteerlabel sort.label  (WS 16 03 92)
  1396. }
  1397.  
  1398. FUNCTION {sort.format.names}
  1399. { 's :=
  1400.   #1 'nameptr :=
  1401.   ""
  1402.   s num.names$ 'numnames :=
  1403.   numnames 'namesleft :=
  1404.     { namesleft #0 > }
  1405.     { nameptr #1 >
  1406.     { "         " * }
  1407.     'skip$
  1408.       if$                 % het sorteerlabel begrijpt Nederlandse namen
  1409.                           % b.v  "Dale van JH"   (WS)
  1410.       s nameptr "{ll{ }}{vv{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
  1411.       nameptr numnames = t "others" = and
  1412.     { "{\em~et~al}" * }
  1413.     { t sortify * }
  1414.       if$
  1415.       nameptr #1 + 'nameptr :=
  1416.       namesleft #1 - 'namesleft :=
  1417.     }
  1418.   while$
  1419. }
  1420.  
  1421. FUNCTION {sort.format.title}
  1422. { 't :=
  1423.   "De " #3                                % titels worden gesorteerd
  1424.    "Een " #4                              % op het lidwoord na  (WS)
  1425.     "A " #2                               % verbeterd (2-11-93)
  1426.      "An " #3
  1427.       "The " #4 t chop.word
  1428.               chop.word
  1429.           chop.word
  1430.       chop.word
  1431.   chop.word
  1432.   sortify
  1433.   #1 global.max$ substring$
  1434. }
  1435.  
  1436. FUNCTION {author.sort}
  1437. { author empty$
  1438.     { key empty$
  1439.     { "to sort, need author or key in " cite$ * warning$
  1440.       ""
  1441.     }
  1442.     { key sortify }
  1443.       if$
  1444.     }
  1445.     { author sort.format.names }
  1446.   if$
  1447. }
  1448.  
  1449.  
  1450. %% (26-10-92: we proberen eerst op editor te sorteren,
  1451. %% als dat niet kan op author
  1452. FUNCTION {author.editor.sort}
  1453. { editor empty$
  1454.     { author empty$
  1455.     { key empty$
  1456.         { "to sort, need author, editor, or key in " cite$ * warning$
  1457.           ""
  1458.         }
  1459.         { key sortify }
  1460.       if$
  1461.     }
  1462.     { author sort.format.names }
  1463.       if$
  1464.     }
  1465.     { editor sort.format.names }
  1466.   if$
  1467. }
  1468.  
  1469. FUNCTION {author.organization.sort}
  1470. { author empty$
  1471.     { organization empty$
  1472.     { key empty$
  1473.         { "to sort, need author, organization, or key in " cite$ * warning$
  1474.           ""
  1475.         }
  1476.         { key sortify }
  1477.       if$
  1478.     }
  1479.     { "The " #4 organization chop.word sortify }
  1480.       if$
  1481.     }
  1482.     { author sort.format.names }
  1483.   if$
  1484. }
  1485.  
  1486. FUNCTION {editor.organization.sort}
  1487. { editor empty$
  1488.     { organization empty$
  1489.     { key empty$
  1490.         { "to sort, need editor, organization, or key in " cite$ * warning$
  1491.           ""
  1492.         }
  1493.         { key sortify }
  1494.       if$
  1495.     }
  1496.     { "The " #4 organization chop.word sortify }
  1497.       if$
  1498.     }
  1499.     { editor sort.format.names }
  1500.   if$
  1501. }
  1502.  
  1503. FUNCTION {presort}
  1504. { calc.label                           % maak het label dat wordt afgedrukt
  1505.   " "                                  %
  1506.   type$ "book" =                       % maak nu het sorteerlabel
  1507.   type$ "inbook" =                     % (WS)
  1508.   or
  1509.     'author.editor.sort
  1510.     { type$ "proceedings" =
  1511.         'editor.organization.sort
  1512.         { type$ "manual" =
  1513.             'author.organization.sort
  1514.             'author.sort
  1515.           if$
  1516.         }
  1517.       if$
  1518.     }
  1519.   if$
  1520.   *
  1521.   "                                                                     "  *
  1522.                     % this fills up the author-string with tabs for proper
  1523.                     % alphabetization: `Dale and Dale' should come after `Dale'
  1524.   year field.or.null numsortify            % year.string bestaat hier nog niet
  1525.   *
  1526.   type$ "article" =
  1527.         { " " *
  1528.           journal field.or.null sortify *
  1529.           volume  field.or.null numsortify *
  1530.           pages   field.or.null numsortify * }
  1531.         { skip$    }
  1532.         if$
  1533.   "    "
  1534.   *
  1535.   title field.or.null
  1536.   sort.format.title
  1537.   *
  1538.   #1 entry.max$ substring$
  1539.   'sort.key$ :=
  1540. }
  1541.  
  1542. ITERATE {presort}
  1543.  
  1544. SORT
  1545.  
  1546. STRINGS { longest.label last.sort.label next.extra }
  1547.  
  1548. INTEGERS { longest.label.width last.extra.num }
  1549.  
  1550. FUNCTION {initialize.longest.label}
  1551. { "" 'longest.label :=
  1552.   #0 int.to.chr$ 'last.sort.label :=
  1553.   "" 'next.extra :=
  1554.   #0 'longest.label.width :=
  1555.   #0 'last.extra.num :=
  1556. }
  1557.  
  1558. FUNCTION {forward.pass}           % (WS 16 03 92) sort.label instead of label
  1559. { last.sort.label sort.label =
  1560.     { last.extra.num #1 + 'last.extra.num :=
  1561.       last.extra.num int.to.chr$ 'extra.label :=
  1562.     }
  1563.     { "a" chr.to.int$ 'last.extra.num :=
  1564.       "" 'extra.label :=
  1565.       sort.label 'last.sort.label :=
  1566.     }
  1567.   if$
  1568. }
  1569.  
  1570.  
  1571. FUNCTION {reverse.pass}         % (WS 16 03 92) year.string used
  1572. { next.extra "b" =
  1573.     { "a" 'extra.label := }
  1574.     'skip$
  1575.   if$
  1576.   year empty$
  1577.     { "n.d." extra.label * 'year.string := }
  1578.     { year   extra.label * 'year.string := }
  1579.   if$
  1580.   extra.label 'next.extra :=
  1581. }
  1582.  
  1583.  
  1584. EXECUTE {initialize.longest.label}
  1585.  
  1586. ITERATE {forward.pass}
  1587.  
  1588. REVERSE {reverse.pass}
  1589.  
  1590. FUNCTION {begin.bib}
  1591.  
  1592. { et.al.char.used
  1593.     { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
  1594.     'skip$
  1595.   if$
  1596.   preamble$ empty$
  1597.  
  1598.     'skip$
  1599.     { preamble$ write$ newline$ }
  1600.   if$
  1601.  
  1602.   "\begin{thebibliography}{}" write$ newline$
  1603.  
  1604. }
  1605.  
  1606. EXECUTE {begin.bib}
  1607.  
  1608. EXECUTE {init.state.consts}
  1609.  
  1610. ITERATE {call.type$}
  1611.  
  1612. FUNCTION {end.bib}
  1613. { newline$
  1614.   "\end{thebibliography}" write$ newline$
  1615. }
  1616.  
  1617. EXECUTE {end.bib}
  1618.  
  1619.